<?php

require_once ('BddView.php');
use BddView;

/**
 * Dernier rempart avant BddView, centralise les demandes d'acces a la BDD et les envoie a la BddView
 * De maniere generale, traite les requetes effecutees par la BddView
 * @author louis
 *
 */
class BddManager{
	/**
	 * Instance du pattern
	 */
	private static $_instance = null;
	/**
	 * La vue sur la Bdd
	 */
	private $bddView;


	/**
	 * Constructeur
	 */
	private function __construct(){
		$this->bddView = BddView::getInstance();
	}

	/**
	 * Singleton pattern
	 */
	public static function getInstance() {
		if(is_null(self::$_instance)) {
			self::$_instance = new BddManager();
		}
		return self::$_instance;
	}

	/**
	 * Fonction pour se connecter à la base de donnée
	 @param $nomBase nom de la base de donnee
	 */
	public function makeConnection(){
		$pdo =$this->bddView->connectBdd('Ecookbook');
		return $pdo;
	}

	/**
	 * Recupere les commentaires, pour un cookbook
	 */
	public function getComment($idCookBook){

		$req = $this->bddView->getComments($idCookBook);

		//libere dans cookbook
		return $req;
	}

	/**
	 * Ajoute un commentaire pour un cookbook
	 * @param unknown_type $cookBookID
	 * @param unknown_type $comment
	 */
	public function addComment($cookBookID,$comment){
		$this->bddView->insertComment($cookBookID,$comment);
	}

	/**
	 * Supprime un commentaire, pour un cookbook
	 * @param unknown_type $cookBookID
	 * @param Comment $comment
	 */
	public function delComment($cookBookID,Comment $comment){
		$this->bddView->removeComment($cookBookID,$comment);
	}
	
	/** 
	 * Retourne la liste de tous les cookbooks
	 */
	public function getAllCookbooks(){
		$req = $this->bddView->getAllCookbooks();
		
		while($row = $req->fetch()) {
			$cookbook = new Cookbook($row['ID']);
			$cookbook->fillInformation($row['Titre'], $row['Categorie'], $row['Description'], $row['Mdp'], $row['Annee']);
			$array[]=$cookbook;
		}
		//libere connection au serveur, d'autres requetes peuvent être effectuees
		$req->closeCursor();
		return $array;
	}
	
	/**
	 * Retourne la liste des cookbooks de 4A
	 */
	public function getAllCookbookParam($param){
		$req = $this->bddView->getAllCookbookParam($param);
		
		while($row = $req->fetch()) {
			$cookbook = new Cookbook($row['ID']);
			$cookbook->fillInformation($row['Titre'], $row['Categorie'], $row['Description'], $row['Mdp'], $row['Annee']);
			$array[]=$cookbook;
		}
		//libere connection au serveur, d'autres requetes peuvent être effectuees
		$req->closeCursor();
		return $array;
	}
	
	/**
	 * Retourne pour un cookbook donnee, sa recette
	 * @param unknown_type $cookBookID le cookbook choisi
	 * @param unknown_type $numeroRecette le numero de recette choisi
	 */
	public function getRecipe($cookBookID,$numeroRecette){
		$resRequete = $this->bddView->getRecipe($cookBookID,$numeroRecette);
		$row = $resRequete->fetch();
		
		$recipe = new Recipe($row['Contenu'], $row['NumeroRecette'],$row['Path']);
		
		return $recipe;
	}
	
	/**
	 * Retourne, pour un cookbook, la liste de toutes ses recettes, triees par numero de recette croissant
	 * @param unknown_type $cookBookID
	 */
	public function getAllRecipe($cookBookID){
		$resRequete = $this->bddView->getAllRecipe($cookBookID);
		
		while($row = $resRequete->fetch()) {
			$recipe = new Recipe($row['Contenu'], $row['NumeroRecette'], $row['Path']);
			$array[]=$recipe;
		}
		
		return $array;
	}
}

?>
